<script>
	export default {
		globalData: {
			//全局音频上下文
			audioCtx: null,  
		},
		onLaunch: function() {
			console.log('App Launch')
			// 初始化音频上下文
			let audioCtx = null
			let globalData = this.$options.globalData
			if(globalData.audioCtx == null) {
				// 创建并返回内部 audio 上下文 innerAudioContext 对象。
				audioCtx = uni.createInnerAudioContext()
				audioCtx.autoplay = true
				
				audioCtx.onError(res => {
					console.log("音频播放错误事件", res)
					uni.showToast({
						title: '音频播放错误事件',
						icon: 'none'
					})
				})
				
				// 音频进入可以播放状态，但不保证后面可以流畅播放
				audioCtx.onCanplay(() => {
					this.setAudioMetaInner(audioCtx)
				})
				
				// 音频播放事件
				audioCtx.onPlay(()=>{
					this.setAudioMetaInner(audioCtx);
				});
				
				// 音频停止事件
				audioCtx.onStop(()=>{
					this.setAudioMetaInner(audioCtx);
				});
				
				// 音频自然播放结束事件
				audioCtx.onEnded(()=>{
					this.setAudioMetaInner(audioCtx);
				});
				
				// 音频加载中事件，当音频因为数据不足，需要停下来加载时会触发
				audioCtx.onWaiting(()=>{
					this.setAudioMetaInner(audioCtx);
				});	
				
				// 音频播放进度更新事件
				audioCtx.onTimeUpdate(()=>{
					// console.log("音频播放进度更新事件")
					this.setAudioMetaInner(audioCtx);
				});
				
				globalData.audioCtx = audioCtx;
				this.$options.globalData = globalData;
			}
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			/* 更新音频信息 */
			setAudioMetaInner(audioCtx){
				this.$u.throttle(()=>{
					let audM = {};
					audM.volume = audioCtx.volume;
					audM.buffered = audioCtx.buffered;
					audM.duration = audioCtx.duration;
					audM.currentTime = audioCtx.currentTime;
					audM.paused = audioCtx.paused;
					this.$store.commit('setAudioMeta', audM);
				}, 800);
			},
			
			/* 更新进度 */
			updateCurrentTime(audioCtx){
				this.$u.throttle(()=>{
					console.log("updateCurrentTime")
					let audM = {};
					audM.currentTime = audioCtx.currentTime;
					audM.paused = audioCtx.paused;
					this.$store.commit('setAudioMeta', audM);
				}, 800);
			},
		}
	}
</script>

<style lang="scss">
	@import "components/uView-UI/uview-ui/index.scss";
	@import  "./static/css/total.css";
	
	:root{
		--title-bar-height: 120rpx;
		--primary-color: #e51419;
	}
	
</style>
